'''
这段代码使用 matplotlib 库绘制了上海和北京两个城市在 60 分钟内的温度变化图，并将图形保存为文件。
'''

import matplotlib.pyplot as plt                     # 导入 matplotlib.pyplot 库，用于绘制图形
import random                                         # 导入 random 库，用于生成随机数

plt.rcParams["font.family"] = ["SimHei","SimSun","Microsoft YaHei"]  # 设置中文字体，从黑体、宋体、微软雅黑中依次查找可用字体

x = range(60)                                         # 创建一个包含 0 到 59 的整数序列，代表 60 个时间点
y_shanghai = [random.uniform(15, 25) for i in x]    # 为上海生成 60 个介于 15 到 25 之间的随机浮点数，作为上海每个时间点的温度
y_beijing = [random.uniform(1, 10) for i in x]      # 为北京生成 60 个介于 1 到 10 之间的随机浮点数，作为北京每个时间点的温度

x_ticks_label = [f"{i}分" for i in x]               # 生成 x 轴刻度的标签，格式为 "{i}分"，表示每个时间点
y_ticks = range(-5,30)                               # 生成 y 轴刻度的范围，从 -5 到 29

plt.figure(figsize=(12, 5), dpi=100)                # 创建一个新的图形窗口，设置图形的大小为 12 英寸宽，5 英寸高，分辨率为 100 dpi
plt.plot(x, y_shanghai, label="上海")               # 绘制上海的温度曲线，使用默认的线条样式，并添加标签 "上海"
plt.plot(x, y_beijing, linestyle="--", label="北京") # 绘制北京的温度曲线，使用虚线样式，并添加标签 "北京"

plt.xticks(x[::5], x_ticks_label[::5])              # 修改 x 轴坐标刻度的显示，每隔 5 个时间点显示一个刻度，并使用对应的标签
plt.yticks(y_ticks[::3])                             # 修改 y 轴坐标刻度的显示，每隔 3 个温度值显示一个刻度
plt.grid(True, color='gray', linestyle=':', linewidth=0.5)  # 添加网格线，设置为灰色的虚线，线宽为 0.5
plt.xlabel("时间")                                   # 设置 x 轴的标签为 "时间"
plt.ylabel("温度")                                   # 设置 y 轴的标签为 "温度"
plt.title("温度变化图", fontsize=20)                 # 设置图形的标题为 "温度变化图"，字体大小为 20
plt.legend(loc="best")                               # 显示图例，自动选择最佳位置

plt.savefig(r".\数据分析\matplotlib画图\a.png")     # 将绘制好的图形保存为指定路径下的 a.png 文件
plt.show()                                            # 显示绘制好的图形